package com.shundr.auth.user.http;

import java.util.ArrayList;
import java.util.List;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import com.shundr.auth.frame.db.model.PictureInfo;
import com.shundr.auth.frame.util.JsonUtil;
import com.shundr.auth.user.model.AuthCompanyDetailInfo;
import com.shundr.auth.user.model.AuthCompanyInfo;
import com.shundr.auth.user.model.AuthDriverDetailInfo;
import com.shundr.auth.user.model.AuthDriverInfo;
import com.shundr.auth.user.model.AuthOwnnerDetailInfo;
import com.shundr.auth.user.model.AuthOwnnerInfo;
import com.shundr.auth.user.model.UserInfo;

/**
 * 用户解析公共类 UserParser
 * 
 * @author larry 2015-4-13 下午5:37:27
 * @version 1.0.0
 *
 */
public class UserParser {

	/**
	 * 解析登录成功 parserUserInfo(这里用一句话描述这个方法的作用) (这里描述这个方法适用条件 – 可选)
	 * 
	 * @param data
	 * @return UserInfo
	 * @exception
	 * @since 1.0.0
	 */
	public static UserInfo parserUserInfo(String data) {
		try {
			JSONObject obj = new JSONObject(data);
			String accessToken = obj.getString("accessToken");
			String lastActiveTime = obj.getString("lastActiveTime");
			boolean serialIdChanged = obj.getBoolean("serialIdChanged");
			UserInfo info = JsonUtil.fromJson(obj.getJSONObject("user")
					.toString(), UserInfo.class);
			info.setAccessToken(accessToken);
			info.setLastActiveTime(lastActiveTime);
			info.setSerialIdChanged(serialIdChanged);
			return info;
		} catch (JSONException e) {
			e.printStackTrace();
		}
		return null;
	}

	/**
	 * 上传图片 parserUpload(这里用一句话描述这个方法的作用) (这里描述这个方法适用条件 – 可选)
	 * 
	 * @param data
	 * @return PictureInfo
	 * @exception
	 * @since 1.0.0
	 */
	public static PictureInfo parserUpload(String data) {
		try {
			JSONObject obj = new JSONObject(data);
			JSONArray array = obj.getJSONArray("upImageList");
			List<PictureInfo> infos = JsonUtil
					.getList(array, PictureInfo.class);
			if (infos.size() > 0) {
				return infos.get(0);
			}
		} catch (JSONException e) {
			e.printStackTrace();
		}
		return null;
	}

	/**
	 * 解析用户列表
	 * 
	 * @param data
	 * @return
	 */
	public static List<UserInfo> parserUserList(String data) {
		try {
			JSONArray array = new JSONArray(data);
			List<UserInfo> infos = JsonUtil.getList(array, UserInfo.class);
			return infos;
		} catch (JSONException e) {
			e.printStackTrace();
		}
		return new ArrayList<UserInfo>();
	}

	/**
	 * 认证列表 parserAuthList(这里用一句话描述这个方法的作用) (这里描述这个方法适用条件 – 可选)
	 * 
	 * @param data
	 * @return List<AuthInfo>
	 * @exception
	 * @since 1.0.0
	 */
	public static List<AuthCompanyInfo> parserAuthList(String data) {
		try {
			JSONArray array = new JSONArray(data);
			List<AuthCompanyInfo> infos = JsonUtil.getList(array,
					AuthCompanyInfo.class);
			return infos;
		} catch (JSONException e) {
			e.printStackTrace();
		}
		return new ArrayList<AuthCompanyInfo>();
	}

	/**
	 * 司机认证列表 parserAuthDriverList(这里用一句话描述这个方法的作用) (这里描述这个方法适用条件 – 可选)
	 * 
	 * @param data
	 * @return List<AuthDriverInfo>
	 * @exception
	 * @since 1.0.0
	 */
	public static List<AuthDriverInfo> parserAuthDriverList(String data) {
		try {
			JSONArray array = new JSONArray(data);
			List<AuthDriverInfo> infos = JsonUtil.getList(array,
					AuthDriverInfo.class);
			return infos;
		} catch (JSONException e) {
			e.printStackTrace();
		}
		return new ArrayList<AuthDriverInfo>();
	}

	/**
	 * 个人认证列表 parserAuthOwnnerList(这里用一句话描述这个方法的作用) (这里描述这个方法适用条件 – 可选)
	 * 
	 * @param data
	 * @return List<AuthOwnnerInfo>
	 * @exception
	 * @since 1.0.0
	 */
	public static List<AuthOwnnerInfo> parserAuthOwnnerList(String data) {
		try {
			JSONArray array = new JSONArray(data);
			List<AuthOwnnerInfo> infos = JsonUtil.getList(array,
					AuthOwnnerInfo.class);
			return infos;
		} catch (JSONException e) {
			e.printStackTrace();
		}
		return new ArrayList<AuthOwnnerInfo>();
	}

	/**
	 * 认证详情 parserAuthDetailInfo(这里用一句话描述这个方法的作用) (这里描述这个方法适用条件 – 可选)
	 * 
	 * @param data
	 * @return AuthDetailInfo
	 * @exception
	 * @since 1.0.0
	 */
	public static AuthCompanyDetailInfo parserAuthDetailInfo(String data) {
		try {
			JSONObject obj = new JSONObject(data);
			AuthCompanyDetailInfo info = JsonUtil.fromJson(obj.toString(),
					AuthCompanyDetailInfo.class);
			return info;
		} catch (JSONException e) {
			e.printStackTrace();
		}
		return null;
	}

	/**
	 * 
	 * parserAuthDriverDetailInfo(这里用一句话描述这个方法的作用) (这里描述这个方法适用条件 – 可选)
	 * 
	 * @param data
	 * @return AuthDriverDetailInfo
	 * @exception
	 * @since 1.0.0
	 */
	public static AuthDriverDetailInfo parserAuthDriverDetailInfo(String data) {
		try {
			JSONObject obj = new JSONObject(data);
			AuthDriverDetailInfo info = JsonUtil.fromJson(obj.toString(),
					AuthDriverDetailInfo.class);
			return info;
		} catch (JSONException e) {
			e.printStackTrace();
		}
		return null;
	}

	/**
	 * 
	 * parserAuthOwnnerDetailInfo(这里用一句话描述这个方法的作用) (这里描述这个方法适用条件 – 可选)
	 * 
	 * @param data
	 * @return AuthDriverDetailInfo
	 * @exception
	 * @since 1.0.0
	 */
	public static AuthOwnnerDetailInfo parserAuthOwnnerDetailInfo(String data) {
		try {
			JSONObject obj = new JSONObject(data);
			AuthOwnnerDetailInfo info = JsonUtil.fromJson(obj.toString(),
					AuthOwnnerDetailInfo.class);
			return info;
		} catch (JSONException e) {
			e.printStackTrace();
		}
		return null;
	}

	/**
	 * 解析用户详情信息 parserUserDetailInfo(这里用一句话描述这个方法的作用) (这里描述这个方法适用条件 – 可选)
	 * 
	 * @param data
	 * @return UserDetailInfo
	 * @exception
	 * @since 1.0.0
	 */
	public static UserInfo parserUserDetailInfo(String data) {
		try {
			UserInfo info = JsonUtil.fromJson(data, UserInfo.class);
			return info;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

}
